package com.cn.lp.base;

import java.util.Optional;

public enum RecordExtStatisticsMode {

    /**
     * 求和
     */
    SUM(1, "求和"),
    /**
     * 最大
     */
    MAX(2, "最大"),
    /**
     * 最小
     */
    MIN(3, "最小"),
    /**
     * 第一个
     */
    FIRST(4, "第一个"),
    /**
     * 左后一个
     */
    LAST(5, "最后一个"),
    /**
     * 计数
     */
    COUNT(6, "计数"),

    ;
    private int id;

    private String desc;

    RecordExtStatisticsMode(int id, String desc) {
        this.id = id;
        this.desc = desc;
    }

    public int getId() {
        return this.id;
    }

    public String getDesc() {
        return this.desc;
    }

    /**
     * 通过id获得枚举项
     *
     * @param id 枚举id
     * @throws RuntimeException 当指定id不存在
     */
    public static RecordExtStatisticsMode get(int id) {
        return tryGet(id).orElseThrow(() -> new RuntimeException("[" + RecordExtStatisticsMode.class.getSimpleName() + "]枚举中不存在id为[" + id + "]的项!"));
    }

    /**
     * 尝试通过id获得枚举项
     *
     * @param id 枚举id
     */
    public static Optional<RecordExtStatisticsMode> tryGet(int id) {
        for (var item : RecordExtStatisticsMode.values()) {
            if (item.getId() == id) {
                return Optional.of(item);
            }
        }
        return Optional.empty();
    }

}